package com.qf.index;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.db.Db;
import cn.hutool.db.Entity;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;

import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;

public class ReadZh {

    public static void main(String[] args) throws SQLException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(format.format(new Date()) + " 程序开始了~~~");

        int onePageNum = 1000;
//        String limit = "";
        String limit = " limit 1";

        String newDataName = "scholar_25_01.";
        String summaryTable = newDataName + "pm_ut_aid_info_0120";
        String spiderCnCoreTable = newDataName + "spider_cn_core";
        String spiderCnKiAnalysisTable = newDataName + "spider_cnki_analysis";
        String spiderCqVipAnalysisTable = newDataName + "spider_cqvip_analysis";
        String spiderWanFangAnalysisTable = newDataName + "spider_wanfang_analysis";
        String spiderYiiGleAnalysisTable = newDataName + "spider_yiigle_analysis";
        String pmArticleTable = newDataName + "spider_pubmed_vip_extend";
        String utArticleTable = newDataName + "spider_tb_true_92007022_1125";
        String jourMergeTable = newDataName + "basic_jour_merge";
        String quotaTable = newDataName + "basic_core_paper_quota";
        String basicCoreTable = newDataName + "basic_core_paper";
        String wordAndCodeSetMapTable = newDataName + "word_and_code_set_map";
        String fullAbbrKeyWordTable = newDataName + "full_abbr_key_word_1218";
        String pmOrUtIdTablePm = newDataName + "pm_ut_aid_info_pm";
        Map<Integer, Map<Integer, String>> typeIdUrlMap = new ConcurrentHashMap<>();

        // 词（药物，数字代号：1; 基因，数字代号：2; 通路，数字代号：3; 疾病，数字代号：4）和code（1，2，3，4）代码集合。
        Map<String, Set<Integer>> wordAndCodeSetMap = Drug.getWordAndCodeSetMap(wordAndCodeSetMapTable, "id", "word`,`code_set", limit);

        // dataIdAndAidMap.size(): 4230578
        String field = "keywordsen`,`arttitleen`,`artabstracten`,`artpubyear`,`journalcn`,`journalen`,`artdoi`,`vol`,`issue`,`startpage`,`endpage`,`doctype`,`authornames`,`artorgannames`,`funds`,`artificialkeywords`,`arttitle`,`artabstract`,`artabstract`,`subjectnames`,`arturl`,`keywords";
        readZh(spiderYiiGleAnalysisTable, onePageNum, limit, "pid", field, summaryTable, wordAndCodeSetMap);


        // main
    }


    public static void readZh(String spiderYiiGleAnalysisTable, int onePageNum, String limit, String autoId, String field, String summaryTable, Map<String, Set<Integer>> wordAndCodeSetMap) throws SQLException {
        Map<Integer, Integer> dataIdAndAidMap = ReadPm.getDataIdAndAidMap(summaryTable, "id", "yiigle_id");
        System.out.println("dataIdAndAidMap.size(): " + dataIdAndAidMap.size());
        int tableMax = Db.use().queryNumber("select max(" + autoId + ") from " + spiderYiiGleAnalysisTable).intValue();
        if (tableMax < 1) {
            return;
        }
        Collection<Integer> tableList = new ArrayList<>();
        NumberUtil.appendRange(0, tableMax + onePageNum, onePageNum, tableList);
        tableList.parallelStream().forEach(startId -> {
            try {
                List<Entity> tableData = Db.use().query("select `" + autoId + "`,`" + field + "` from " + spiderYiiGleAnalysisTable + " where " + autoId + " between " + startId + " and " + (startId + onePageNum - 1) + limit);
                for (Entity entry : tableData) {
                    Integer dataId = entry.getInt(autoId);
                    if (!dataIdAndAidMap.containsKey(dataId)) {
                        continue;
                    }
                    String keyword = Utils.getStrField(entry, "keywordsen");
                    List<String> keywordList = new ArrayList<>();
                    if (keyword.contains("\"]")) {
                        List<String> keywords = JSONObject.parseArray(keyword, String.class);
                        for (String s : keywords) {
                            s = (s.startsWith("<i class=\"italic\">") && s.endsWith("</i>")) ? s.substring("<i class=\"italic\">".length(), s.length() - "</i>".length()).trim() : s.trim();
                            keywordList.add(s);
                        }
                    }
                    String title = Utils.getStrField(entry, "arttitleen").replaceAll("<[a-z]+ [^>]*>", " ").replaceAll("</[a-z]+>", " ").replaceAll(" +", " ").trim();
                    String abText = Utils.getStrField(entry, "artabstracten").replaceAll("<[a-z]+ [^>]*>", " ").replaceAll("</[a-z]+>", " ").replaceAll(" +", " ").trim();
                    String py = Utils.getStrField(entry, "artpubyear");
                    int year = NumberUtil.isInteger(py.trim()) ? Integer.parseInt(py.trim()) : 1900;
                    String cnFrom = Utils.dellEnd(Utils.getStrField(entry, "journalcn"));
                    String journal = cnFrom.isEmpty() ? Utils.dellEnd(Utils.getStrField(entry, "journalen")) : cnFrom;
                    String di = Utils.dellEnd(Utils.getStrField(entry, "artdoi"));
                    String v = Utils.getStrField(entry, "vol");
                    String i = Utils.getStrField(entry, "issue");
                    String b = Utils.getStrField(entry, "startpage");
                    String e = Utils.getStrField(entry, "endpage");
                    // Mol Neurobiol. 2016;53(3):1648-1653. doi: 10.1007/s12035-015-9121-6.
                    String info = journal + ". " + ((py.endsWith("-") ? py.substring(0, py.length() - "-".length()) : py) + ";") + (v + ":") + ("(" + (i.startsWith("0") ? i.substring(1) : i) + "): ")
                            + b + (e.isEmpty() ? ". " : "-" + e + ". ") + (di.length() > 6 ? ("doi: " + di + ". ") : "");
                    String dt = Utils.getStrField(entry, "doctype");
                    // 与PubMed的出版类型相对应。
                    dt = "病例报告".equals(dt) ? "Case Reports" : dt;
                    dt = "述评".equals(dt) ? "Comment" : dt;
                    dt = "指南".equals(dt) ? "Guideline" : dt;
                    dt = "原创论文".equals(dt) ? "Journal Article" : dt;
                    dt = "Meta分析".equals(dt) ? "Meta-Analysis" : dt;
                    dt = "消息".equals(dt) ? "News" : dt;
                    dt = "综述".equals(dt) ? "Review" : dt;

                    // 论文作者，先以字段"authornames"为主，再以"authororgans"拆解出来的作者作为补充。
                    String authorNames = Utils.getStrField(entry, "authornames");
                    List<String> authList = authorNames.contains("\"]") ? JSONObject.parseArray(authorNames, String.class) : new ArrayList<>();
                    List<En.C1Auth> c1List = Utils.getZhC1List(Utils.getStrField(entry, "artorgannames"));
                    String fus = Utils.getStrField(entry, "funds");
                    List<String> fundList = new ArrayList<>();
                    List<String> funds = fus.contains("\"]") ? JSONObject.parseArray(fus, String.class) : new ArrayList<>();
                    for (String fund : funds) {
                        String f = fund.contains("|") ? fund.substring(0, fund.indexOf("|")) : fund;
                        fundList.add(f);
                    }
                    // 中文的关键词，还有一个字段是"keywords"，这个字段与论文全文中的关键词是一致的，但本程序中使用的另一关键词，全部包含了它，而且还有多的，故使用另一个。 2025.04.19 倩倩查到artificialkeywords无值而keywords有值的情况，特对下面的代码作了修改。
                    List<String> cnKey = Utils.getFieldList(entry, "artificialkeywords");
                    List<String> keywords = Utils.getFieldList(entry, "keywords");
                    List<String> cnKeyList = !cnKey.isEmpty() ? cnKey : keywords;

                    String cnTi = Utils.getStrField(entry, "arttitle").replaceAll("<[a-z]+ [^>]*>", " ").replaceAll("</[a-z]+>", " ").replaceAll(" +", " ").trim();
                    String cnAb = Utils.getStrField(entry, "artabstract").replaceAll("<[a-z]+ [^>]*>", " ").replaceAll("</[a-z]+>", " ").replaceAll(" +", " ").trim();
                    List<En.CategoryAndInfo> categoryAndInfoList = Drug.getDrug(title, CollUtil.join(keywordList, "; "), abText, wordAndCodeSetMap);
                    Set<String> mailSet = new HashSet<>();
                    ReadWp.getMailDoi(Utils.getStrField(entry, "artabstract"), mailSet);
                    String subject = Utils.getStrField(entry, "subjectnames");
                    List<String> subjectsList = subject.contains("]") ? JSONObject.parseArray(subject, String.class) : new ArrayList<>();
                    try {
                        Db.use().update(
                                Entity.create().set("doi", di).set("ab", abText).set("keyword", JSONUtil.toJsonStr(keywordList)).set("c1_au", JSONUtil.toJsonStr(c1List)).set("title", title).set("journal", journal).set("year", year).set("pt", ReadUt.strToJson(dt))
                                        .set("auth", JSONUtil.toJsonStr(authList)).set("drug_gene_pathway_disease", JSONUtil.toJsonStr(categoryAndInfoList)).set("fund_list", JSONUtil.toJsonStr(fundList)).set("info", Fusion.reInfo(info)).set("cn_ti", cnTi)
                                        .set("cn_ab", cnAb).set("cn_kw", JSONUtil.toJsonStr(cnKeyList)).set("mail_list", JSONUtil.toJsonStr(mailSet)).set("subject", JSONUtil.toJsonStr(subjectsList)),
                                Entity.create(summaryTable).set("id", dataIdAndAidMap.get(dataId)));
                    } catch (SQLException ee) {
                        ee.printStackTrace();
                    }
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        });
        dataIdAndAidMap.clear();
    }


    public static En.AbKeyMethod getCnAbKeyMethod(String cnAb) {
        En.AbKeyMethod abKeyMethod = new En.AbKeyMethod();
        if (null != cnAb && cnAb.length() > 5) {
            cnAb = "。" + cnAb.replaceAll("(\\.|\\. |。|。 |^|\n)背景和目的", "。Ł1ł").replaceAll("(\\.|\\. |。|。 |^|\n)材料与方法", "。Ł2ł")
                    .replaceAll("(\\.|\\. |。|。 |^|\n)(结果|目的|背景|结论|方法|讨论)([ :\n])", "。ĺļ$2:ҁҘ");
            cnAb = (!cnAb.contains("Ł1ł")) ? cnAb.replaceFirst("背景和目的", "ĺļ背景和目的ҁҘ") : cnAb.replace("Ł1ł", "ĺļ背景和目的ҁҘ");
            cnAb = (!cnAb.contains("Ł2ł")) ? cnAb.replaceFirst("材料与方法", "ĺļ材料与方法ҁҘ") : cnAb.replace("Ł2ł", "ĺļ材料与方法ҁҘ");
            cnAb = (!cnAb.contains("结果:ҁҘ")) ? cnAb.replaceFirst("([\\u4e00-\\u9fa5])(\\.|\\. |。|。 )(结果)", "$1。ĺļ$3:ҁҘ") : cnAb;
            cnAb = (!cnAb.contains("目的:ҁҘ")) ? cnAb.replaceFirst("([\\u4e00-\\u9fa5])(\\.|\\. |。|。 )(目的)", "$1。ĺļ$3:ҁҘ") : cnAb;
            cnAb = (!cnAb.contains("背景:ҁҘ")) ? cnAb.replaceFirst("([\\u4e00-\\u9fa5])(\\.|\\. |。|。 )(背景)", "$1。ĺļ$3:ҁҘ") : cnAb;
            cnAb = (!cnAb.contains("结论:ҁҘ")) ? cnAb.replaceFirst("([\\u4e00-\\u9fa5])(\\.|\\. |。|。 )(结论)", "$1。ĺļ$3:ҁҘ") : cnAb;
            cnAb = (!cnAb.contains("方法:ҁҘ")) ? cnAb.replaceFirst("([\\u4e00-\\u9fa5])(\\.|\\. |。|。 )(方法)", "$1。ĺļ$3:ҁҘ") : cnAb;
            cnAb = (!cnAb.contains("讨论:ҁҘ")) ? cnAb.replaceFirst("([\\u4e00-\\u9fa5])(\\.|\\. |。|。 )(讨论)", "$1。ĺļ$3:ҁҘ") : cnAb;
            cnAb = (!cnAb.contains("结果:ҁҘ")) ? cnAb.replaceFirst("(\\.|\\. |。|。 |^|\n)(结果)", "。ĺļ$2:ҁҘ") : cnAb;
            cnAb = (!cnAb.contains("目的:ҁҘ")) ? cnAb.replaceFirst("(\\.|\\. |。|。 |^|\n)(目的)", "。ĺļ$2:ҁҘ") : cnAb;
            cnAb = (!cnAb.contains("背景:ҁҘ")) ? cnAb.replaceFirst("(\\.|\\. |。|。 |^|\n)(背景)", "。ĺļ$2:ҁҘ") : cnAb;
            cnAb = (!cnAb.contains("结论:ҁҘ")) ? cnAb.replaceFirst("(\\.|\\. |。|。 |^|\n)(结论)", "。ĺļ$2:ҁҘ") : cnAb;
            cnAb = (!cnAb.contains("方法:ҁҘ")) ? cnAb.replaceFirst("(\\.|\\. |。|。 |^|\n)(方法)", "。ĺļ$2:ҁҘ") : cnAb;
            cnAb = (!cnAb.contains("讨论:ҁҘ")) ? cnAb.replaceFirst("(\\.|\\. |。|。 |^|\n)(讨论)", "。ĺļ$2:ҁҘ") : cnAb;
            cnAb = cnAb.startsWith("。") ? cnAb.substring("。".length()).trim() : cnAb.trim();
            String[] split = cnAb.split("ĺļ");
            List<En.Trans> backgroundList = new ArrayList<>();
            List<En.Trans> discussionList = new ArrayList<>();
            List<En.Trans> methodsList = new ArrayList<>();
            List<En.Trans> resultsList = new ArrayList<>();
            for (String s : split) {
                s = s.endsWith("\n。") ? s.substring(0, s.length() - "\n。".length()) : s;
                s = s.replace("\n", " ").replace("　", " ").replaceAll(" +", " ").trim();
                if (!"。".equals(s) && s.contains("ҁҘ")) {
                    cnAddTrans("背景和目的:ҁҘ", s, "background and purpose", backgroundList);
                    cnAddTrans("材料与方法:ҁҘ", s, "materials and methods", methodsList);
                    cnAddTrans("结果:ҁҘ", s, "results", resultsList);
                    cnAddTrans("目的:ҁҘ", s, "purpose", backgroundList);
                    cnAddTrans("背景:ҁҘ", s, "background", backgroundList);
                    cnAddTrans("结论:ҁҘ", s, "conclusion", resultsList);
                    cnAddTrans("方法:ҁҘ", s, "methods", methodsList);
                    cnAddTrans("讨论:ҁҘ", s, "discussion", discussionList);
                }
            }
            // 一般来说，不允许只出现一项或二项，而至少应该有三项才是完整的，所以当不足3项时，直接返回空的，只有满足时才返回。
            if ((backgroundList.size() + discussionList.size() + methodsList.size() + resultsList.size()) > 2) {
                abKeyMethod.setBackground(JSONUtil.toJsonStr(backgroundList));
                abKeyMethod.setDiscussion(JSONUtil.toJsonStr(discussionList));
                abKeyMethod.setMethods(JSONUtil.toJsonStr(methodsList));
                abKeyMethod.setResults(JSONUtil.toJsonStr(resultsList));
            }
        }
        return abKeyMethod;
    }

    public static void cnAddTrans(String cnName, String info, String label, List<En.Trans> list) {
        if (info.contains(cnName)) {
            En.Trans trans = new En.Trans();
            trans.setCn(info.replace("ҁҘ", "").replace(":：", ": "));
            trans.setEn("");
            trans.setLabel(label);
            list.add(trans);
        }
    }

    /*
      alter table pm_ut_aid_info_cd add column `cn_discussion` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_cd add column `cn_results` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_cd add column `cn_methods` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_cd add column `cn_background` longtext comment '中文摘要提取出来的特定字段';

      alter table pm_ut_aid_info_wf add column `cn_discussion` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_wf add column `cn_results` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_wf add column `cn_methods` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_wf add column `cn_background` longtext comment '中文摘要提取出来的特定字段';

      alter table pm_ut_aid_info_wp add column `cn_discussion` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_wp add column `cn_results` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_wp add column `cn_methods` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_wp add column `cn_background` longtext comment '中文摘要提取出来的特定字段';

      alter table pm_ut_aid_info_zh add column `cn_discussion` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_zh add column `cn_results` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_zh add column `cn_methods` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_zh add column `cn_background` longtext comment '中文摘要提取出来的特定字段';

      alter table pm_ut_aid_info_zw add column `cn_discussion` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_zw add column `cn_results` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_zw add column `cn_methods` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_zw add column `cn_background` longtext comment '中文摘要提取出来的特定字段';

      alter table pm_ut_aid_info_pm add column `cn_discussion` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_pm add column `cn_results` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_pm add column `cn_methods` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_pm add column `cn_background` longtext comment '中文摘要提取出来的特定字段';

      alter table pm_ut_aid_info_ut add column `cn_discussion` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_ut add column `cn_results` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_ut add column `cn_methods` longtext comment '中文摘要提取出来的特定字段';
      alter table pm_ut_aid_info_ut add column `cn_background` longtext comment '中文摘要提取出来的特定字段';
     */

    /*
      原创论文|613205
      unknown|315044
      综述|86299
      病例报告|72057
      消息|46605
      述评|32282
      其他|31661
      继续教育|16047
      文摘|15155
      指南|6806
      会议报道|4760
      Meta分析|1024
      读者来信|903
     */

    /*
      CREATE TABLE `pm_ut_aid_info_zh` (
        `id` int(10) NOT NULL AUTO_INCREMENT,
        `key_word_list` longtext COMMENT '关键词集合，此是基于标题、摘要、关键词三处的整合',
        `pm_ut_doi_list` text COMMENT 'pm、doi、ut三者的集合，用于童工的ES检索',
        `journal` text COMMENT '期刊的名称',
        `aid` int(9) DEFAULT NULL COMMENT '因与原表字段重名，pid改为aid，论文的唯一主键，使用老鲍的论文基础表中的自增主键',
        `citation_quota` double DEFAULT NULL COMMENT '引文的质量（按中科院分区表）',
        `reference_quota` double DEFAULT NULL COMMENT '参文的质量',
        `ti_key` text COMMENT '从标题中提取的关键词',
        `ab_key` longtext COMMENT '从摘要中提取的关键词',
        `kw_key` longtext COMMENT '从关键词中提取的关键词(若是主题词给予转换)',
        `abb_word` longtext COMMENT '从简写中提取出来的关键词（是一对）',
        `zky_dalei` int(1) DEFAULT NULL COMMENT '中科院的期刊分区表最佳的大类',
        `jcr_if` double DEFAULT NULL COMMENT 'jcr(scie)期刊影响因子',
        `year` int(4) DEFAULT NULL COMMENT '论文的出版年',
        `title` text COMMENT '论文的原始标题',
        `keyword` longtext COMMENT '论文的原始关键词',
        `ab` longtext COMMENT '论文的原始摘要',
        `mesh` text COMMENT 'PubMed的主题词表，含主题词和副主题词',
        `jid` int(9) DEFAULT NULL COMMENT '期刊的唯一id号，此为期刊关联表的自增主键',
        `discussion` longtext COMMENT '摘要提取出来的特定字段',
        `results` longtext COMMENT '摘要提取出来的特定字段',
        `methods` longtext COMMENT '摘要提取出来的特定字段',
        `background` longtext COMMENT '摘要提取出来的特定字段',
        `c1_list` longtext COMMENT 'wos表中的c1或PubMed表中的作者单位信息字段，只保留单位信息',
        `c1_unit_list` longtext COMMENT '从c1中提取出来的单位信息',
        `rp_list` longtext COMMENT 'wos表中的rp字段，只保留单位信息',
        `rp_unit_list` longtext COMMENT '从rp中提取出来的单位信息',
        `cite` longtext COMMENT '参文格式（NLM、APA、MLA、AMA四种）',
        `cn_ti` text COMMENT '中文的文献标题',
        `cn_ab` longtext COMMENT '中文的文献摘要',
        `cn_kw` longtext COMMENT '中文的文献关键词',
        `cn_type` text COMMENT '中文的文献的类型，综述等',
        `pt` text COMMENT '英文的文献的类型，综述等，是一个集合',
        `cn_country` text COMMENT '中文的发文的国家，区分第一或通讯以及其它的，此为非第一或通讯',
        `cn_unit` longtext COMMENT '中文的发文的机构，区分第一或通讯以及其它的，此为非第一或通讯',
        `is_cns` int(1) DEFAULT NULL COMMENT '六大顶级刊，是为1，否为0',
        `cn_fund` longtext COMMENT '中文的基金的名称',
        `cn_country_1` text COMMENT '中文的发文的国家，区分第一或通讯以及其它的，此为第一或通讯',
        `cn_unit_1` text COMMENT '中文的发文的机构，区分第一或通讯以及其它的，此为第一或通讯',
        `pmId` int(8) DEFAULT NULL COMMENT '最大8位的pmId号',
        `ut` varchar(15) DEFAULT NULL COMMENT '此为15位的UT号',
        `doi` text COMMENT 'doi号集合',
        `nlmId` varchar(25) DEFAULT NULL COMMENT 'nlmId号，无其它字符',
        `cite_score` double DEFAULT NULL COMMENT '期刊citeScore影响因子值',
        `jcr_quartile` int(1) DEFAULT NULL COMMENT 'jcr(scie)期刊分区',
        `fund` longtext COMMENT '来自wos的基金名称(FU字段)',
        `fund_list` longtext COMMENT '从原始基金信息中提供出来的基金名称，待规范。',
        `method_info` longtext COMMENT '摘要提取出来的特定字段集合',
        `trans_ok` int(1) DEFAULT NULL COMMENT '翻译完成为1，没有完成为0',
        `drug_gene_pathway_disease` longtext COMMENT '药物、基因、通路、疾病',
        `auth` longtext COMMENT '原始的作者信息，全写',
        `sort_auth` longtext COMMENT 'Chang-Ming Huang  英文名字中，新志贾这类属于正序，反之贾新志这类属于反序，程序默认为正序转反序，如果是反序则不用再转换了。',
        `info` longtext COMMENT '备用字段',
        `is_retraction` int(1) DEFAULT NULL COMMENT '是否是撤稿，是为1，否为0；',
        `is_china` int(1) DEFAULT NULL COMMENT '是否是中国人发表的，是为1，否为0；',
        `cn_discussion` longtext COMMENT '中文摘要提取出来的特定字段',
        `cn_results` longtext COMMENT '中文摘要提取出来的特定字段',
        `cn_methods` longtext COMMENT '中文摘要提取出来的特定字段',
        `cn_background` longtext COMMENT '中文摘要提取出来的特定字段',
        PRIMARY KEY (`id`),
        KEY `aid` (`aid`),
        KEY `pmId` (`pmId`),
        KEY `ut` (`ut`),
        KEY `jid` (`jid`),
        KEY `trans_ok` (`trans_ok`)
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
     */


}
